命令历史
敲过的命令,Linux 是会有记录的,预设可以记录1000条历史命令。这些命令保存在用户的家目录中的 .bash-history
文件中。只有当用户正常退出当前的 shell 时,在当前 shell 中运行的命令才会保存至 .bash_history 文件中。
环境变量
- HISTSIZE:命令历史记录的条数;
- HISTFILE:~/.bash_history
- HISTFILESIZE:命令历史文件记录历史的条数
- HISTTIMEFORMAT:命令的时间戳。这个环境变量需设置,这个功能只能在这个变量被设置之后,那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。
设置 HISTTIMEFORMAT
1
| export HISTTIMEFORMAT='%F %T'
|
查看历史命令的时间戳
1 2 3 4 5
| history | more 1 2008-08-05 19:02:39 service network restart 2 2008-08-05 19:02:39 exit 3 2008-08-05 19:02:39 id 4 2008-08-05 19:02:39 cat /etc/redhat-release
|
history 参数
- history [n] n为数字,列出最近的n条命令
- -c 将目前shell中的所有history命令消除
- history [-raw] histfiles
- -a 将目前新增的命令写入histfiles, 默认写入~/.bash_history
- -r 将histfiles内容读入到目前shell的history记忆中
- -w 将目前history记忆的内容写入到histfiles
调用历史中的命令
命令:!!
两个连续的 “!”,表示执行上一条命令
1 2 3 4 5
| [root@localhost ~] /root [root@localhost ~] pwd /root
|
命令:!n
”!n”,这里的 n 是数字,表示执行命令历史中第 n 条指令
1 2 3 4 5 6 7 8 9 10 11
| [root@localhost ~] ....... 1058 vim .bashrc 1059 pwd 1060 history [root@localhost ~] pwd /root
|
命令:”!字符串”
”!字符串”(字符串大于等于1),以 p 为例,执行命令历史中最近一次 p 开头的命令
1 2 3
| [root@localhost ~] pwd /root
|
别名 alias
别名 alias 也是 bash 所特有的功能之一。可以通过 alias 把一个常用的并且很长的指令别名成简介易记的指令。不想用了还可以用 unalias 解除别名功能。直接敲 alias 会看到目前系统预设的 alias
1 2 3 4 5 6 7 8 9 10 11
| [root@localhost ~] alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
|
语法
命令格式
给命令自定义一个名字,当前 shell 有效
1 2 3
| [root@localhost ~] [root@localhost ~] /root
|
取消命令别名
1 2 3
| [root@localhost ~] [root@localhost ~] -bash: denny: command not found
|
通配符
“*” 匹配零个或多个字符
1 2 3 4
| [root@localhost 111] 1 11.txt 1.txt 22.txt 2.txt 33.txt 3.txt 44.zip 55.zip [root@localhost 111] 11.txt 1.txt 22.txt 2.txt 33.txt 3.txt
|
“?”匹配一个字符
1 2 3 4
| [root@localhost 111] 1 11.txt 1.txt 22.txt 2.txt 33.txt 3.txt 44.zip 55.zip [root@localhost 111] 1.txt 2.txt 3.txt
|
输入输出重定向(>,>>,<,2>,2>>)
输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是 <,输出重定向是命令是 >,另外还有追加重定向>>,以及错误重定向2>。
命令:>
输出重定向,把文件里的内容删掉,写入新的。
1 2 3 4 5
| [root@localhost 111] 1111 [root@localhost 111] [root@localhost 111] 222
|
命令:>>
追加重定向,在文件原来的基础上在下面继续写入。
1 2 3 4
| [root@localhost 111] [root@localhost 111] 222 333
|
命令:<
输入重定向,把文件的内容输入到前面
命令:2>,2>>
错误重定向;追加错误重定向。把错误的内容重定向或追加重定向到文件中去
1 2 3 4 5 6 7 8
| [root@localhost 111] [root@localhost 111] ls: 无法访问5: 没有那个文件或目录 [root@localhost 111] [root@localhost 111] ls: 无法访问5: 没有那个文件或目录 ls: 无法访问5: 没有那个文件或目录
|
管道符“|”
管道符“|”,就是把前面的命令运行的结果丢给后面的命令去处理
1 2 3 4
| [root@localhost ~] 6 [root@localhost ~] 21
|
作业控制
当运行一个进程时,可以使它暂停(ctrl+z),然后使用fg命令恢复它,利用bg命令使它到后台运行,也可以终止它(ctrl+c)。
使用 vim 编辑 test1.txt 。随便输入一些内容,按“ESC”后,使用“ctrl+z”使任务暂停
1 2 3
| [root@localhost ~] [1]+ 已停止 vim test1.txt
|
可以看到提示“vim test1.txt”已停止了,然后使用 fg 命令恢复它,此时就进入刚才的 vim 窗口了。使用“ctrl+c”直接终止 vim 任务。
命令:jobs
查看暂停的进程
1 2 3 4 5 6
| [root@localhost ~] ^Z [2]+ 已停止 sleep 100 [root@localhost ~] [1]- 已停止 vim test1.txt [2]+ 已停止 sleep 100
|
命令 fg;fg [编号]
恢复暂停进程,标号后面带加号的优先恢复,减号其次,也可以恢复指定暂停中的进程
1 2 3 4 5 6 7 8
| [root@localhost ~] [1]- 已停止 vim test1.txt [2]+ 已停止 sleep 100 [root@localhost ~] [1]+ 已停止 vim test1.txt [root@localhost ~] [1]+ 已停止 vim test1.txt [2]- 已停止 sleep 100
|
命令:bg;bg [编号]
后台运行暂停的进程,编号后面带加号的有限后台运行,减号其次,也可以指定后台运行暂停中的某个进程,& 表示后台运行
1 2 3 4 5 6 7 8
| [root@localhost ~] [1]+ 已停止 vim test1.txt [2]- 已停止 sleep 100 [root@localhost ~] [2]- sleep 100 & [root@localhost ~] [1]+ 已停止 vim test1.txt [2]- 完成 sleep 100
|
丢到后台的任务如何关掉?如果没有退出刚才的 shell 那么先使用 “fg 编号”把任务调到前台,然后使用“ctrl+c”结束任务
命令:ps
使用 & 把任务丢如后台运行,可以使用 ps aux
命令找到那个进程,结束该进程需要使用 kill 命令
1 2 3
| [root@localhost ~] root 2307 0.0 0.2 151464 4996 pts/0 T 11:35 0:00 vim test1.txt root 2349 0.0 0.0 112664 972 pts/0 S+ 12:34 0:00 grep --color=auto vim
|
命令:kill
如果关闭当前的 shell ,再次打开另一个 shell 时,使用 jobs 命令并不能显示后台运行或者被暂停的任务,要想停掉它们,则需要先知道起PID,然后使用 kill 命令杀死那个进程
使用 & 把任务丢到后台运行,会显示 pid 信息。忘记这个 pid 使用 ps aux 命令查找
1 2 3 4 5
| [root@localhost ~] [2] 2351 [root@localhost ~] root 2351 0.0 0.0 148308 1348 pts/0 S 12:38 0:00 vmstat 1 root 2353 0.0 0.0 112664 972 pts/0 S+ 12:38 0:00 grep --color=auto vmstat
|
kill 命令语法
kill 命令语法很简单,直接在后面加上 pid 即可,如果遇到杀不死的进程可以在 kill 后面加一个选项